<?php
class tpl_editor {
	function call ($toObj) {
		$toObj->text ('');

		Y('Skin.Editor');

		$Editor = $toObj->DOG_appendChild ('div')->addClass ('Editor');
		$Editor->DOG_appendChild('h2')->text(Y ('Module.List.Editor.YML', 'title'));

		$Field = $Editor->DOG_appendChild('fieldset')->attr(array('class'=>'EditorMenu'))->DOG_appendChild('legend')->text('menu');

		$MenuDOG = $Field->DOG_appendChild('ul');

		// メニューの生成
		$Menu = Y('Module.List.Editor.YML', Y('Module.List.Editor.Op'));
		if (isset($Menu['menu'])) {
			$Menu = $Menu['menu'];
			$this->createMenu ($Menu, $MenuDOG);
		}

		$yData = Y('Module.List.Editor.YML', Y('Module.List.Editor.Op'));

		if (empty($yData['description'])) {
			$Field = $Editor->DOG_appendChild('fieldset')->attr(array('class'=>'EditorHelp'))->DOG_appendChild('legend')->text('description');
			$UL = $Field->DOG_appendChild('ul');
			$UL->DOG_appendChild('li')->text('ここにはヘルプが表示されます。');
		}else {
			$Field = $Editor->DOG_appendChild('fieldset')->attr(array('class'=>'EditorHelp'))->DOG_appendChild('legend')->text('description');
			$UL = $Field->DOG_appendChild('ul');
			$UL->DOG_appendChild('li')->text($yData['description']);
		}

		$Field = $Editor->DOG_appendChild('fieldset')->attr(array('class'=>'EditorMainArea'))->DOG_appendChild('legend')->text('main');

		if (isset($yData['template'])) {
			Y('Document.load', $yData['template'], $Field);
		} else {
			Y('Document.load', 'editor:'.Y('Module.List.Editor.Op'), $Field);
		}
		return $toObj;


	}

	/**
	 * メニュー生成の再帰処理
	 */
	public function createMenu ($Menu, $MenuDOG) {
		if (is_array($Menu)) {
			foreach ((array)$Menu as $MenuKey=>$MenuVal) {
				// メニューのキーが数字の場合、新タイプなので枠を作る
				if (is_numeric($MenuKey)) {
					if (isset($MenuVal['type']) && $MenuVal['type'] == 'group') {
						$MM = $MenuDOG->DOG_appendChild('li')->text($MenuKey);
						$MMUL = $MM->DOG_appendChild('ul');
						$this->createMenu($MenuVal['menu'], $MMUL);
					} elseif (isset($MenuVal['type']) && $MenuVal['type'] == 'line') {
						$MM = $MenuDOG->DOG_appendChild('li')->addClass('line')->text('&nbsp;');
					} else {
						$Attr = array();
						if (isset($MenuVal['id'])) $Attr['id'] = $MenuVal['id']; 
						if (isset($MenuVal['href'])) $Attr['href'] = Y('Route.Path'). $MenuVal['href']; 
						else $Attr['href'] = Y('Route.Path').Y('Module.List.Editor.YML', 'baseurl');
						$MM = $MenuDOG->DOG_appendChild('li')->DOG_appendChild('a')->attr($Attr);
						$MM->text($MenuVal['name']);
					}
				} else {
				// メニューのキーが数字以外の場合、旧タイプなのでキー+ulで作成する。
					$MM = $MenuDOG->DOG_appendChild('li')->text($MenuKey);
					$MMUL = $MM->DOG_appendChild('ul');
					foreach ((array)$MenuVal as $ID=>$Item) {
						// IE6ではJavascriptでのページ遷移にBASEタグが使えない場合があるようなので、絶対パスで記述する。
						$MMUL->DOG_appendChild('li')->text('<a id="'.$ID.'" href="'.Y('App.Config.Site.BaseURL').Y('Route.Path').'/'.Y('Module.List.Editor.YML', 'baseurl').'/">'.$Item.'</a>');
					}
				}
			}
		} else {
		}
	}
}
?>